public class LCP11 {

    //找出其中的两条线，使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量
    public static void main(String[] args) {
        int[] nums = {1,8,6,2,5,4,8,3,7};
        System.out.println(maxArea(nums));
        int[] nums1 = {1,1};
        System.out.println(maxArea(nums1));
    }

    //长*宽   遍历  时间复杂度O(n^2)
    public static int maxArea1(int[] height) {
        int s = 0;
        int temp;
        for (int i = 0; i < height.length; i++) {
            for (int j = i+1; j < height.length; j++) {
                temp = Math.min(height[i], height[j]) * Math.abs(j-i);
                s = s<temp ? temp : s;
            }
        }
        return s;
    }

    //怎么更快 双指针法
    //模式识别：需要移动左右两头的问题可以考虑双指针
    public static int maxArea(int[] height) {
        int l = 0, r = height.length - 1;
        int ans = 0;
        while (l < r) {
            int area = Math.min(height[l], height[r]) * (r - l);
            ans = Math.max(ans, area);
            if (height[l] <= height[r]) {
                ++l;
            } else {
                --r;
            }
        }

        return ans;
    }

}
